package com.tegtech.common.function;

/**
 * 自定义函数式接口
 * 
 * @Author Jun
 * @date 2021年4月27日 下午3:10:12
 */
@FunctionalInterface
public interface Procedure {

	void run();

	/**
	 * 执行Procedure之后执行
	 * @param after
	 * @return
	 */
	default Procedure andThen(Procedure after) {
		return () -> {
			this.run();
			after.run();
		};
	}

	/**
	 * 执行Procedure之前执行
	 * @param before
	 * @return
	 */
	default Procedure compose(Procedure before) {
		return () -> {
			before.run();
			this.run();
		};
	}

}
